Digital computer systems have in recent years come into widespread use for the generation and manipulation of many kinds of information, including graphic (pictorial) information. For such an application, the system is usually provided with a cathode ray tube (CRT) display, since such a display permits rapid "painting", enabling complex information to be displayed quickly, and enabling the effects of new commands to be seen within a short time.
Graphic information to be stored in a digital computer system for presentation on a CRT display has generally been stored in two ways, known as "object-based" and "pixel-based":
In an object-base storage scheme, information determinative of the graphic information to be displayed, rather than a direct representation of that information, is stored; for example, the coordinates of the beginning and ending points of a line, the coordinates of the corners of a rectangle, the radius and the coordinates of the center of a circle, etc. This method has the disadvantage that computation of the screen contents must be performed on the definitional information. PA0 In a pixel based storage scheme, for each elemental portion of the CRT screen (denoted a "pixel", that term being derived from picture element), memory is organized with a storage cell corresponding to each pixel position on the screen, and information is stored in each cell connoting what is to be displayed at the corresponding pixel position. In the simplest implementation, a single bit is stored in a cell denoting whether the corresponding screen pixel position is ON or OFF; in more complex implementations, a multi-bit binary number is stored that might denote such quantities as the color, intensity, and attributes (blinking, reverse video, etc.) of a corresponding screen pixel position. This method has the disadvantage that "zooming" (changing the displayed size of the elements) requires extensive manipulation of the stored data.
User applications often wish to work with graphic images of such size and complexity that it may not be expedient to display the entire image on the screen at one time. Doing so might require individual elements to be represented smaller on the screen then the screen granularity can accurately render or the human eye can distinguish. In a situation where a user is working on a workstation that may function as a terminal of a mainframe host system, he may have accessed a graphic image from the host system and may wish to manipulate it or alter it for inclusion in a document of his own; he thus could be attempting to work with a larger, more complex image than he could feasibly have created at the workstation.
Furthermore, in some implementations of pixel-based graphics systems, "zooming out" to view the entire image at once is accomplished by manipulating the bit map in such a way that bits are discarded in order to effectively "shrink" the element sizes; while subsequent "zooming in" can restore the image to the size it had before zooming out, resolution will have been irreparably degraded.
It thus behooves a user running under such an implementation to remain "zoomed in", viewing only a portion of his total image at any one time on the screen. A capability to "pan" is usually provided, enabling the user to select any portion of the overall image as the portion that is currently visible to him on the screen.
A complication can occur when a user desires to perform a manipulation (e.g., moving, rotating, changing the fill pattern, altering text size or font, etc.) on an element or an area larger than is visible on the screen at one time. The prior-art methods for identifying such an element or area consist in using a pointing device (e.g., a "mouse") to identify two diagonally opposite corners of a rectangle containing the element or area to be identified. It is, of course, impossible to do this when the entire perimeter of the desired rectangle cannot be seen at once; under the prior-art methods, the user would be required to zoom out in order to specify the rectangle, encountering the aformentioned loss of granularity.